package com.scs.application.modules.sys.service;

import com.scs.application.core.service.IBaseService;
import com.scs.application.modules.sys.entity.ScheduleJob;

import java.util.List;

/**
 * <p>
 * 定时任务 Service
 * </p>
 */

public interface ScheduleJobService extends IBaseService<ScheduleJob> {


    /**
     * 运行一次
     * @param scheduleJob
     */
    String runOnce(ScheduleJob scheduleJob);

    /**
     * 暂停任务
     * @param scheduleJob
     */
    void pause(ScheduleJob scheduleJob);

    /**
     * 恢复任务
     * @param scheduleJob
     */
    void resume(ScheduleJob scheduleJob);

    /**
     * 十次执行时间
     * @param cronExpression
     * @return
     */
    List<String> fiveCronTime(String cronExpression);

    /**
     * 启动所有定时任务
     */
    void startAll(boolean throwE);

    //更新定时任务状态
    void updateJobStatusExecution(List<ScheduleJob> scheduleJobs, String toStatus);

    /**
     * 暂停所有定时任务
     */
    boolean stopAll(boolean throwE);

    /**
     * 是否正在运行
     * @return
     */
    boolean isRunning();

    /**
     * 从定时任务中删除，并删除这条数据
     * @param id
     */
    void deleteJob(String id,boolean isDeleteDate);


    /**
     * 添加或修改JOB
     * @param job
     */
    void addOrModifyJob(ScheduleJob job);

    //任务操作前执行校验
    void checkJob(ScheduleJob scheduleJob, String opType);

    //任务操作前执行校验
    String testJob();

    String getLastSuccessDate(String invokeTarget);
}
